home *** CD-ROM | disk | FTP | other *** search
/ Visual Cafe 3 / Visual Cafe 3.ISO / Vcafe / Main.bin / ObjectStreamField.java < prev    next >
Text File  |  1998-09-22  |  3KB  |  96 lines

  1. /*
  2.  * @(#)ObjectStreamField.java    1.10 98/07/01
  3.  *
  4.  * Copyright 1995-1998 by Sun Microsystems, Inc.,
  5.  * 901 San Antonio Road, Palo Alto, California, 94303, U.S.A.
  6.  * All rights reserved.
  7.  * 
  8.  * This software is the confidential and proprietary information
  9.  * of Sun Microsystems, Inc. ("Confidential Information").  You
  10.  * shall not disclose such Confidential Information and shall use
  11.  * it only in accordance with the terms of the license agreement
  12.  * you entered into with Sun.
  13.  */
  14.  
  15. package java.io;
  16.  
  17. /**
  18.  * A description of a field in a class.
  19.  *
  20.  * @author  unascribed
  21.  * @version 1.10, 07/01/98
  22.  */
  23. class ObjectStreamField {
  24.     ObjectStreamField(String n, char t, int o, String ts)
  25.     {
  26.     //    System.out.println("new field, " + n + " " + t + " " + ts);
  27.     name = n;
  28.     type = t;
  29.     offset = o;
  30.     typeString = ts;
  31.     }
  32.  
  33.     /*
  34.      * Default constructor creates an empty field.
  35.      * Usually used just to get to the sort functions.
  36.      */ 
  37.     ObjectStreamField() {
  38.     }
  39.  
  40.     /**
  41.      * test if this field is a primitive or not.
  42.      */
  43.     boolean isPrimitive() {
  44.     return (type != '[' && type != 'L');
  45.     }
  46.  
  47.     /**
  48.      * Compare this with another ObjectStreamField.
  49.      * return -1 if this is smaller, 0 if equal, 1 if greater
  50.      * types that are primitives are "smaller" than objects.
  51.      * if equal, the names are compared.
  52.      */
  53.     int compare(ObjectStreamField other) {
  54.     boolean thisprim = (typeString == null);
  55.     boolean otherprim = (other.typeString == null);
  56.  
  57.     if (thisprim != otherprim) {
  58.         return (thisprim ? -1 : 1);
  59.     }
  60.     return name.compareTo(other.name);
  61.     }
  62.  
  63.     /**
  64.      * Compare the types of two class descriptors.
  65.      * The match if they have the same primitive types.
  66.      * or if they are both objects and the object types match.
  67.      */
  68.     boolean typeEquals(ObjectStreamField other) {
  69.     if (other == null || type != other.type)
  70.       return false;
  71.  
  72.     /* Return true if the primitive types matched */
  73.     if (typeString == null && other.typeString == null)
  74.         return true;
  75.  
  76.     return ObjectStreamClass.compareClassNames(typeString,
  77.                            other.typeString,
  78.                            '/');
  79.     }
  80.  
  81.     /**
  82.      * Return a string describing this field.
  83.      */
  84.     public String toString() {
  85.     if (typeString != null)
  86.         return typeString + " " + name + " @" + offset;
  87.     else
  88.         return type + " " + name + " @" + offset;
  89.     }
  90.  
  91.     String name;        // the name of the field
  92.     char type;            // type first byte of the type signature
  93.     int  offset;        // Offset into the object of the field
  94.     String typeString;        // iff object, typename
  95. }
  96.